using System;
using Synapse.Framework.Pipe.Operations;

namespace Synapse.Framework.Pipe.PipeLines
{
    public interface IPipeLineBuilder
    {
        IPipe<TInput, TOutput, TInput> Pin<TInput, TOutput>(IOperation<TInput, TOutput> operation);
        IPipe<TInput, TOutput, TInput> Pin<TInput, TOutput>(Func<TInput,TOutput> operation);

        IPipe<TInput, TOutput, TInput> Pin<TInput, TOutput>(
            Func<IPipe<TInput, TInput, TOutput>, IOperation<TInput, TOutput>> operation);
    }
}